Azure DDoS Protection/Policy - Azure Policy Definitions/Remediation - DDOS Enable Diagnostic Logging/Powershell/Enable-DDoSLogs.ps1 (42 lines of code) (raw):
# Set Variables
$workspace = "cybersecuritydemo"
$workspaceRG = "SOC"
# Prepare Modules
Write-Verbose "Checking for Azure module..."
$AzModule = Get-Module -Name "Az.*" -ListAvailable
if ($AzModule -eq $null) {
Write-Verbose "Azure PowerShell module not found"
# Check for Admin Privileges
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$isadmin = ($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
if($isadmin -eq $False){
# No Admin, install to current user
Write-Warning -Message "Can not install Az Module. You are not running as Administrator"
Write-Warning -Message "Installing Az Module to Current User Scope"
Install-Module Az -Scope CurrentUser -Force
}
Else{
# Admin, install to all users
Install-Module Az -Force
}
}
# Check/Set Execution Policy
if ((Get-ExecutionPolicy).value__ -eq '3') {
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force
}
# Import Modules
Import-Module Az
# Login to Azure
Login-AzAccount
# Get All Subs
$Subscriptions = Get-AzSubscription
# Create Diag Settings
$wsid = (Get-AzOperationalInsightsWorkspace -Name $workspace -ResourceGroupName $workspaceRG).ResourceId
foreach ($Subscription in $Subscriptions) {
Select-AzSubscription -Subscription $Subscription
$pips = Get-AzPublicIpAddress -Name ContosoVM1-ip
foreach ($pip in $pips) {
$pipname = $pip.Name
Set-AzDiagnosticSetting -Name "${pipname}-Diag" -ResourceId $pip.Id -WorkspaceId $wsid -Category DDoSProtectionNotifications,DDoSMitigationFlowLogs,DDoSMitigationReports -MetricCategory AllMetrics -Enabled $true -RetentionEnabled $False -RetentionInDays 0 -ErrorAction SilentlyContinue
}
}